limpa(3,0,24,80,cor,.f.)
limpa(3,0,23,79,cor,.t.)
declare cabeca[5], estrutura[5]
sele retencao
go top
cabeca[1]  = 'CODIGO'       ; estrutura[1] = fiel(1) 
cabeca[2]  = 'DESCRICAO-1'  ; estrutura[2] = fiel(2)
cabeca[3]  = 'DESCRICAO-2'  ; estrutura[3] = fiel(3)
cabeca[4]  = 'DESCRICAO-3'  ; estrutura[4] = fiel(4)
cabeca[5]  = 'ALIQUOTA'     ; estrutura[5] = fiel(5)
menu(24,0,' Inclui ',2,1)
menu(24,8,'Altera ',1,1)
menu(24,15,'Exclui ',1,1)
menu(24,22,'Relatorio ',1,1)
menu(24,32,'Procura ',1,1)
menu(24,72,'Esc-Sai ',1,3)
dbedit(4,1,22,78,estrutura,'ret100','@X',cabeca,.T.)
retu

function ret100(modo,coluna)

set cursor on
if modo = 0 .or. modo = 3
   retu(1)
endif
telalocal=savescreen(4,1,24,80)
tecla = lastkey()
do case
   case tecla = 5 .and. modo = 1

    mensa(10,'Inicio do arquivo ',2)
    retu(2)

   case tecla = 24 .and. modo = 2

    mensa(10,' Final do arquivo ',2)
    retu(2)

   case tecla = 27

    retu(0)

   case tecla = 73 .or. tecla = 105

    while .t.
       sele retencao
       legal(8,6,22,78,'Inclusao')
       mcodigo = 0               
       @ 10,8 say 'Codigo     :' get mcodigo pict '99'      
       read
       if empty(mcodigo)
          exit
       endif
       seek mcodigo   
       if .not. eof()
          mensa(10,'Retencao ja cadastrada',2)
          loop
       endif
       inicializa()
       @ 11,4  say 'Linha-1   :' get mlinha1 pict '@!'
       @ 12,4  say 'Linha-2   :' get mlinha2 pict '@!'   
       @ 14,4  say 'Aliquota  :' get maliquota   pict '99.99'
       @ 15,4  say 'Receita   :' get mcodreceita pict '9999'
       @ 16,4  say 'Descricao :' get mnomereceit pict '@!K'   
       read
       if confirma(18,60,' 1 - Confirma',' 2 - Cancela ')
          appe blank
          if inclusao()
             grava()
             unlock
          endif
       endif
    enddo
    retu(2)

   case tecla = 65 .or. tecla = 97

     sele retencao
     mcodigo = codigo           
     legal(8,2,22,77,'Alteracao')
     inicializa()
     @ 10,4  say 'Codigo    : ' + strzero(codigo,2)
     @ 11,4  say 'Linha-1   :' get mlinha1 pict '@!'
     @ 12,4  say 'Linha-2   :' get mlinha2 pict '@!'
     @ 14,4  say 'Aliquota  :' get maliquota pict '99.99'
     @ 15,4  say 'Receita   :' get mcodreceita pict '9999'
     @ 16,4  say 'Descricao :' get mnomereceit pict '@!K'   
     read
     if confirma(18,60,' 1 - Confirma ',' 2 - Cancela  ')
        if alteracao()
           grava()
           unlock
        endif
     endif

   retu(2)

   case tecla = 82 .or. tecla = 114

      sele retencao
      legal(6,4,12,78,'Relatorio')
      mtitulo = .t.
      mpagina = 1
      sele retencao
      go top
      while .not. eof()
       set devi to printer
       if mtitulo
          tit_rela('Relatorios de retencoes',mpagina)
          @ prow()+1,0 say 'CODIGO DESCRICAO                                                     ALIQUOTA'
          mtitulo = .f.
       endif
       @ prow()+2,0 say strzero(codigo,2) + ' - ' + linha1    
       @ prow()+1,5 say linha2 + trans(aliquota,'999.99') + str(codreceita,10)
       skip
       if prow() > 54
          eject
          mtitulo = .t.
          mpagina++
       endif
      enddo
      eject
      set devi to screen
      retu(2)


  otherwise

    retu(1)

endcase


